package com.hilinos.base.app;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hilinos.base.api.vo.AccountAddVo;
import com.hilinos.base.api.vo.UserVo;
import com.hilinos.base.user.entity.pojo.UserInfoPoJo;
import com.hilinos.base.user.entity.vo.UserLoginVo;
import com.hilinos.common.entity.BaseQo;

public interface UserApp {

    /**
     * 账号密码接口
     *
     * @param accountId
     * @param accountPassword 密码需要md5加密后转换为大写
     * @param accountType     账号类型
     * @param orgId           机构ID
     * @return
     */
    UserLoginVo login(String appid, String userType, String accountId, String accountPassword, String accountType,
            String orgId);

    /**
     * token验证
     *
     * @param token
     * @return
     */
    UserLoginVo checkToken(String token);

    /**
     * 删除token
     *
     * @param token
     */
    void removeToken(String token);

    /**
     * 创建用户并创建账户
     *
     * @param userVo
     * @param accountVo
     */
    void addUserAndAccount(UserVo userVo, AccountAddVo accountVo);

    /**
     * 编辑用户
     *
     * @param userVo
     */
    void editUser(UserVo userVo);

    /**
     * 查询用户列表
     *
     * @param userQo
     * @return
     */
    IPage<UserInfoPoJo> userPageList(BaseQo<UserInfoPoJo, UserVo, UserVo> userQo);

    /**
     * 创建用户
     *
     * @param userVo
     */
    void addUser(UserVo userVo);

    /**
     * 绑定账号
     *
     * @param accountVo
     */
    void bindAccount(AccountAddVo accountVo);
}
